#include "CPublicFuns.h"


CCPublicFuns::CCPublicFuns(void)
{
}


CCPublicFuns::~CCPublicFuns(void)
{
}

// 
// void CCPublicFuns::SplitString( char* szText,std::vector<char*> & verStr,char flag /*= '|' */ )
// {
// 	verStr.clear();
// 
// 	int iSize = strlen(szText);
// 	int iPos = 0;
// 	static bool bIsStart = true;
// 	while(szText[iPos] != '\0' && iPos<iSize)
// 	{
// 		if (bIsStart)
// 		{
// 			bIsStart = false;
// 			char *pBuf = (char*)malloc(iSize);
// 			memset(pBuf,'\0',iSize);
// 			verStr.push_back(pBuf);
// 		}
// 
// 		if (szText[iPos] == flag)
// 		{
// 			bIsStart = true;
// 		}
// 		else if (verStr.size()>0)
// 		{
// 			char tem[2];
// 			sprintf(tem,"%c",szText[iPos]);
// 			strcat(verStr[verStr.size() - 1],tem);
// 		}
// 
// 		iPos ++;
// 	}
// }
void CCPublicFuns::SplitString(CCString *pszJson,vector<CCString*> & verStr,char csplit)
{
	const char* pJson = pszJson->getCString();
	SplitString((char*)pJson,verStr,csplit);
}

void CCPublicFuns::SplitString( char* szText,std::vector<CCString*> & verStr,char flag /*= '|' */ )
{
	verStr.clear();

	int iSize = strlen(szText);
	int iPos = 0;
	static bool bIsStart = true;
	while(szText[iPos] != '\0' && iPos<iSize)
	{
		if (bIsStart)
		{
			bIsStart = false;
			CCString *str = CCString::create("");
			verStr.push_back(str);
		}

		if (szText[iPos] == flag)
		{
			bIsStart = true;
		}
		else if (verStr.size()>0)
		{
			char *last = (char *)verStr[verStr.size() - 1]->getCString();
			char tem[2];
			sprintf(tem,"%c",szText[iPos]);
			strcat(last,tem);
			verStr[verStr.size() - 1]->create(last);
		}

		iPos ++;
	}
}

void CCPublicFuns::SplitCCString(CCString *pszJson,vector<CCString*> & verStr,char csplit)
{
	verStr.clear();
	std::string strJson=pszJson->getCString();
	CCLog("*************%s",strJson.c_str());
	int iPos = 0;
	string::size_type iDex =0;
	int iSize = strJson.length();
	static bool bIsStart = true;
	while(iDex!=-1)
	{
		iDex=strJson.find(csplit,iPos);
		if(iDex!=-1)
		{
			verStr.push_back(CCString::createWithFormat("%s",strJson.substr(iPos,iDex-iPos).c_str()));
			CCLog("---%s",strJson.substr(iPos,iDex-iPos).c_str());
			iPos=iDex+1;
		}
	}
}



CCString* CCPublicFuns::GetJsonKey( char* szJson )
{
	CCString* pRet = NULL;
	Json::Reader reader; 
	Json::Value value; 
	if (reader.parse(szJson, value)) 
	{ 
		pRet = CCString::create(value.begin().memberName());
	}	
	return pRet;
}

CCString* CCPublicFuns::GetJsonValue( char* szJson )
{
	CCString* pRet = NULL;
	Json::Reader reader; 
	Json::Value value; 
	if (reader.parse(szJson, value)) 
	{ 
		const char* key = value.begin().memberName();
		if (value[key].isString())
		{		
			pRet = CCString::create(value[key].asString().c_str());
		}
	}	

	return pRet;
}

CCString* CCPublicFuns::GetJsonValueByKey( char* szJson,char*pKey )
{
	CCString* pRet = NULL;
	Json::Reader reader; 
	Json::Value value; 
	if (reader.parse(szJson, value)) 
	{ 
		const char* key = pKey;
		if (value[key].isString())
		{		
			pRet = CCString::create(value[key].asString().c_str());
		}
	}	

	return pRet;
}